One of the major services provided by a cloud service provider is to offer to its customers the provider's infrastructure for running their virtual machines (VMs). To reliably run the VMs, VM images need to be constantly saved from physical servers (also known, or referred to, as computer clusters) in the infrastructure where the VMs are run, to storage servers (also known, or referred to, as storage clusters) in the infrastructure to avoid data loss.
In general, the computer clusters and storage clusters are different clusters that are connected via a datacenter network and a load balancer (LB). Network traffic generated from a client, such as a physical server in the computer cluster, is managed by a virtual switch (VS) hosted on the computer cluster, which only manages the network traffic between the VMs. For example, the client sends a first packet to the LB and the LB selects one of frontend (FE) servers, each FE server having a different IP address, of the storage cluster. The LB then performs some actions on the packet, such as network address translation (NAT) and/or encapsulation, and forwards the packet to the selected FE server. The LB also creates an entry in its session table so that following packets of the same session can be forwarded to the same FE server by simply looking up the table entry. After the FE server receives the first packet, the FE server sends a response to the LB, which forwards the response to the client by looking up the session table.
When the client accesses the storage cluster, all the packets from the client go through the LB. From the client perspective, the client only communicates with a single virtual IP (VIP) address when the client accesses the storage cluster. However, it is the LB that selects an FE server, maps the VIP address the IP address of the selected FE server, performs the NAT, and forwards the packets to the selected FE server. Generally, bandwidth provided by the LB is less than the total physical network bandwidth between the computer cluster and the storage cluster, and the LB becomes the network bottleneck. In addition, the LB poses delays and introduces possible network failure to the connection between the two clusters.